-- ToME - Tales of Maj'Eyal
-- Copyright (C) 2009, 2010, 2011, 2012 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org

local sex = game.player.female and "хозяйка" or "хозяин"
local sex1 = game.player.female and "хозяйкой" or "хозяином"
local sex2 = game.player.female and "нашла" or "нашёл"
local sex3 = game.player.female and "Хозяйка" or "Хозяин"


local has_rod = function(npc, player) return player:findInAllInventoriesBy("define_as", "ROD_OF_RECALL") end
local q = game.player:hasQuest("shertul-fortress")
local set = function(what) return function(npc, player) q:setStatus(q.COMPLETED, "chat-"..what) end end
local isNotSet = function(what) return function(npc, player) return not q:isCompleted("chat-"..what) end end

newChat{ id="welcome",
	text = [[*#LIGHT_GREEN#Существо медленно поворачивается к тебе. Ты слышишь его ужасный голос прямо в своей голове.#WHITE#*
Добро пожаловать, ]]..sex..[[.]],
	answers = {
		{"Ты просил меня прийти, чтобы поговорить о портале?", jump="farportal", cond=function() return q:isCompleted("farportal") and not q:isCompleted("farportal-spawn") end},
		{"Ты просил меня прийти, чтобы поговорить о Жезле возврата?", jump="recall", cond=function() return q:isCompleted("recall") and not q:isCompleted("recall-done") end},
		{"Мой сундучок трансформации может автоматически создавать драгоценные камни?", jump="transmo-gems", cond=function(npc, player) return not q:isCompleted("transmo-chest-extract-gems") and q:isCompleted("transmo-chest") and player:knowTalent(player.T_EXTRACT_GEMS) end},
		{"Ты выглядишь жутковато. Ты можешь изменить свой внешний вид?", jump="changetile", cond=function() return q:isCompleted("recall-done") end},
		{"Кто ты такой и что это за место?", jump="what", cond=isNotSet"what", action=set"what"},
		{sex3.."? Я не хо...", jump="master", cond=isNotSet"master", action=set"master"},
		{"Почему я Вас понимаю? Я не могу прочесть тексты вокруг.", jump="understand", cond=isNotSet"understand", action=set"understand"},
		{"Что я могу здесь делать?", jump="storage", cond=isNotSet"storage", action=set"storage"},
		{"Что ещё может сделать это место?", jump="energy", cond=isNotSet"energy", action=set"energy"},
		{"Можно ли улучшить Плащ обмана так, чтобы мне не нужно было заботиться о нём как о живом существе?", jump="permanent-cloak", 
			cond=function(npc, player)
				local cloak = player:findInAllInventoriesBy("define_as", "CLOAK_DECEPTION")
				return not q:isCompleted("permanent-cloak") and q:isCompleted("transmo-chest") and cloak
		end},
		{"[leave]"},
	}
}

newChat{ id="master",
	text = [[*#LIGHT_GREEN#Существо смотрит на тебя.#WHITE#*
У Вас в руках жезл. Вы ]]..sex..[[.]],
	answers = {
		{"Эээ... хорошо.", jump="welcome"},
	}
}
newChat{ id="understand",
	text = [[*#LIGHT_GREEN#Существо смотрит на тебя.#WHITE#*
У Вас в руках жезл. Вы ]]..sex..[[. Я создан для того, чтобы говорить с ]]..sex1..[[.]],
	answers = {
		{"Эээ... хорошо.", jump="welcome"},
	}
}

newChat{ id="what",
	text = [[*#LIGHT_GREEN#Существо пристально смотрит на тебя. Ты 'видишь' изображения в своей голове.
Ты видишь титанические войны, продолжавшиеся веками, но сегодня забытые. Ты видишь армии, которые, тебе кажется, принадлежат Шер-Тулам, так как они похожи на тени.
Они сражаются при помощи оружиия, магии и других вещей. Они сражаются с богами. Они охотятся за ними, убивая или изгоняя их.
Ты видишь, как огромные крепости, такие как эта, летают в небе Эйяла - блестящие бастионы власти в лучах молодого солнца.
Ты видишь, что боги разбиты, побеждены и мертвы. Все, кроме одного.
Затем ты видишь темноту, кажется, что тень не знает, что было после этих событий.

Ты трясёшь головой, видение рассеивается и к тебе постепенно возвращается нормальное зрение.
#WHITE#*
]],
	answers = {
		{"Это Шер-Тулы? Они сражались с богами?!", jump="godslayers"},
	}
}

newChat{ id="godslayers",
	text = [[Они были должны. Они были страшным орудием войны. Они победили.]],
	answers = {
		{"Но где они теперь, когда победили?", jump="where"},
	}
}

newChat{ id="where",
	text = [[Их больше нет. Я больше ничего не могу тебе сказать.]],
	answers = {
		{"Но я хозяин!", jump="where"},
		{"Конец.", jump="welcome"},
	}
}

newChat{ id="storage",
	text = [[*#LIGHT_GREEN#Существо смотрит на тебя.#WHITE#*
Вы ]]..sex..[[. Вы можете использовать это место по своему усмотрению. К сожалению, энергия истощается, поэтому работают лишь несколько комнат.
На юге находятся складские помещения.]],
	answers = {
		{"Спасибо.", jump="welcome"},
	}
}

newChat{ id="energy",
	text = [[Эта крепость создана в качестве мобильной базы для убийц богов - она может летать.
Она также оборудована различными объектами: поисковыми порталами, полями чрезвычайного сдерживания, удаленным хранилищем, ...
К сожалению, крепость сильно повреждена и слишком долго оставалась в бездействии. Её энергия почти исчерпана.
Возьмите этот сундучок трансформации. Он связан с порталом в крепости. Любой предмет, который Вы поместите внутрь, будет отправлен в реактор и преобразован в энергию.
У этой операции, к сожалению, есть нежелательный побочный эффект: генерация металла, известного как золото. Он не нужен в крепости и, поэтому, будет отправлен Вам обратно.
Есть, однако, нежелательные побочные продукты этой операции: генерация металла известна как золото. Это ни к крепости и, таким образом, будут отправлены обратно к вам.]],
	answers = {
		{"Спаисбо.", jump="welcome", action=function() q:spawn_transmo_chest() end, cond=function(npc, player) return not player:attr("has_transmo") end},
		{"Я уже "..sex2.." похожий сундучок. Он будет работать?", jump="alreadychest", action=function() q:setStatus(q.COMPLETED, "transmo-chest") end, cond=function(npc, player) return player:attr("has_transmo") end},
	}
}

newChat{ id="alreadychest",
	text = [[Да, будет. Сейчас я настрою его на эту крепость.
Готово.]],
	answers = {
		{"Спасибо.", jump="welcome"},
	}
}

newChat{ id="farportal",
	text = [[Давным-давно Шер-Тулы использовали порталы не только для путешествия в известные места, но также для исследования новых частей мира или даже других миров.
Эта крепость оборудована исследовательским порталом, и сейчас достаточно энергии, чтобы выполнить одну телепортацию. Каждая телепортация отправляет Вас в случайную часть мира, затрачивая на это 30 единиц энергии.
Помните, что возвратный портал может оказаться далеко от точки Вашего появляения и его придётся искать. Вы можете использовать Жезл возврата для того, чтобы включить аварийный портал, но это с большой вероятностью приведёт к выходу из строя исследовательского портала.
Вы можете воспользоваться порталом, но будьте осторожны - я чувствую в его комнате странное присутствие.]],
	answers = {
		{"Спасибо, я проверю его.", action=function() q:spawn_farportal_guardian() end},
	}
}

newChat{ id="recall",
	text = [[Жезл возвращения, которым Вы пользуетесь, не артефакт Шер-Тулов, но сделан по их чертежам.
Сейчас в крепости достаточно энергии чтобы его модернизировать. Я могу изменить точку возврата на эту крепость.]],
	answers = {
		{"Меня устраивает то, что есть сейчас. Но всё равно спасибо."},
		{"Это можте быть полезным. Сделай это.", action=function() q:upgrade_rod() end},
	}
}

newChat{ id="transmo-gems",
	text = [[Ах, да, Вы, кажется, владеете искусством алхимии. Я могу изменить настройки сундучка так, что, если это окажется более энергетически выгодным, будет автоматически создаваться драгоценный камень.
На это понадобится 25 единиц энергии.]],
	answers = {
		{"Может быть, позднее."},
		{"Это можте быть полезным. Сделай это.", cond=function() return q.shertul_energy >= 25 end, action=function() q:upgrade_transmo_gems() end},
	}
}

newChat{ id="changetile",
	text = [[Я могу отрегулировать голографическую проекцию так, чтобы она показывала существо той расы, которая Вам больше нравится. На это понадобится 60 единиц энергии.]],
	answers = {
		{"Ты можешь стать человеческой женщиной?", cond=function() return q.shertul_energy >= 60 end, action=function(npc, player)
			q.shertul_energy = q.shertul_energy - 60
			npc.replace_display = mod.class.Actor.new{
				add_mos={{image = "npc/humanoid_female_sluttymaid.png", display_y=-1, display_h=2}},
--				shader = "shadow_simulacrum",
--				shader_args = { color = {0.2, 0.1, 0.8}, base = 0.5, time_factor = 500 },
			}
			npc:removeAllMOs()
			game.level.map:updateMap(npc.x, npc.y)
			game.level.map:particleEmitter(npc.x, npc.y, 1, "demon_teleport")
		end},
		{"Ты можешь стать человеческим мужчиной?", cond=function() return q.shertul_energy >= 60 end, action=function(npc, player)
			q.shertul_energy = q.shertul_energy - 60
			npc.replace_display = mod.class.Actor.new{
				image = "invis.png",
				add_mos={{image = "npc/humanoid_male_sluttymaid.png", display_y=-1, display_h=2}},
--				shader = "shadow_simulacrum",
--				shader_args = { color = {0.2, 0.1, 0.8}, base = 0.5, time_factor = 500 },
			}
			npc:removeAllMOs()
			game.level.map:updateMap(npc.x, npc.y)
			game.level.map:particleEmitter(npc.x, npc.y, 1, "demon_teleport")
		end},
		{"Пожалуйста, вернись в своё стандартное состояние.", cond=function() return q.shertul_energy >= 60 end, action=function(npc, player)
			q.shertul_energy = q.shertul_energy - 60
			npc.replace_display = nil
			npc:removeAllMOs()
			game.level.map:updateMap(npc.x, npc.y)
			game.level.map:particleEmitter(npc.x, npc.y, 1, "demon_teleport")
		end},
		{"На самом деле ты не так плохо выглядишь. Оставайся таким как есть."},
	}
}

newChat{ id="permanent-cloak",
	text = [[Да, ]]..sex..[[. За 10 единиц энергии я смогу перезарядить Ваш плащ. Когда Вы снимете его, эффект всё равно останется.
Но продолжайте носить его в рюкзаке на случай, если кто-то попытается его украсть.]],
	answers = {
		{"Не сейчас."},
		{"Это можте быть полезным. Сделай это.", action=function(npc, player)
			local cloak = player:findInAllInventoriesBy("define_as", "CLOAK_DECEPTION")
			cloak.upgraded_cloak = true
			q.shertul_energy = q.shertul_energy - 10
			q:setStatus(engine.Quest.COMPLETED, "permanent-cloak")
		end},
	}
}

return "welcome"
